#正则表达式的七个境界
#1.固定的字符串
import re
text ='身高:178,体重:120,学号：p201212138,密码:666,'
print(re.findall(r'2012',text))

#2.某一类字符
'''找出单个的数字'''
import re
text ='身高:178,体重:120,学号：p201212138,密码:666,'
print(re.findall(r'\d',text))#\d表示所有的数字

import re
text ='身高:178,体重:120,学号：p201212138,密码:666,'
print(re.findall(r'[a-z]',text))

#3.重复某一类字符
import re
text ='身高:178,体重:120,学号：p201212138,密码:666,'
print(re.findall(r'\d+',text))

#4.组合level2
''''找出座机号码'''
import re
text = '电话号码是18812345678,还有一个18887654321,喜好的数字是0123456,座机是0571-521'
print(re.findall(r'\d{3,4}-\d{7,8}',text))

#5.多种情况
'''找出手机号码或者座机号码'''
import re
text = '电话号码是18812345678,还有一个18887654321,喜好的数字是0123456,座机是0571-521'
print(re.findall(r'\d{4}-\d{8}|1\d{11}',text))

#6.限定位置
'''在句子开头的手机号码或座机'''
import re
text = '18812345678,还有一个电话号码是18887654321,喜好数字是01234567891,他的座机是:0571-52152166'
print(re.findall(r'^1\d{10}|^\d{4}-\d{8}',text))

#7.内部约束
'''找出形如barbar,dardar的前后三个字母重复的字符串'''
import re
text = 'barbar carcar harhel'
print(re.findall(r'(\w{3})(\1)',text))

#写正则表达式的步骤
'''确定模式包含几个子模式'''
'''各个部分的字符分类是什么'''
'''各个子模式如何重复'''
'''是否有外部位置限制'''
'''是否有内部制约关系'''

import re
text = 'abc,Abc,ABC'
print(re.findall(r'abc',text,flags=re.I))

#python的re模块方法
import re
text = '18812345678,他还有一个电话号码是18887654321,他爱好的数字是01234567891,他的座机是：0571-52152166'
m = re.search(r'(\d{4})-(\d{8})',text)
print(m.group(1))

import re
text='18812345678,他还有一个电话号码是18887654321,他爱好的数字是01234567891,他的座机是：0571-52152166'
it=re.finditer(r'(\d{4})-(\d{8})',text)
for m in it:
    print(m)

